package zzf;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;

import java.util.Map;

/*
* SpringMVC除了在方法上传入原生的Request和session外还可以吧数据带给页面
* 1:可以在方法中传入Map,Model或者ModelMap
*   可以这些参数里面保存的数据都会被放在请求域中,可以在页面上获取到
*
* 2:方法的返回值可以变为ModelAndView类型
*   既包含视图信息(页面地址),也包含模型数据(给页面的数据);
*   而且数据是放到请求域中的.
*
* 3:给session域中保存数据
*   使用@SessionAttributes注解:
*   只能写在类上
*   @SessionAttributes(value = "msg",types = {String.class}),给BindingAwareModelMap中保存的数据,同时给session中放一份
*       value指定保存数据时要给session中数据的key
*   types = {String.class}:指定只要保存了String类型的数据,同时给session中也放一份
*
*   注意:@SessionAttributes不推荐使用,可能会引发异常
*
* */

@SessionAttributes(value = "msg",types = {String.class})
@Controller
public class OutputController {

    @RequestMapping("/handle01")
    public String handle01(Map<String,Object> map){
        System.out.println("handle01");
        map.put("msg","你好");
        return "success";
    }

    @RequestMapping("/handle04")
    public ModelAndView handle04(){
        System.out.println("handle04");
        //传入一个视图名,视图解析器会帮我们拼串出真实页面地址:
        ModelAndView success = new ModelAndView("success");
        success.addObject("msg","你好哦!");
        return success;
    }
}
